package com.workflow.sdk.infra.repository.model;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.util.Date;
import java.io.Serializable;

/**
 * <p>
 * 流程执行表
 * </p>
 *
 * @author cyj
 * @since 2022-06-01
 */
@TableName("t_workflow_execute")
@Data
public class WorkflowExecutePo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(value = "id")
    private Long id;
    /**
     * 执行id
     */
    private Long executeId;
    /**
     * 流程id
     */
    private Long workflowId;
    /**
     * 当前节点
     */
    private Integer node;
    /**
     * (类型)start,end,choose,decide
     */
    private String nodeType;
    /**
     * 节点名称
     */
    private String nodeName;
    /**
     * 子节点，”,“隔开
     */
    private String childrenNode;
    /**
     * 状态：0-执行中 1-执行完 2-未执行
     */
    private Integer status;
    /**
     * 创建人
     */
    private String createBy;
    /**
     * 创建时间
     */
    private Date createTime;
    /**
     * 执行时间
     */
    private String executeBy;
    /**
     * 执行人
     */
    private Date executeTime;

    /**
     * 外部关联
     */
    private String relevance;

    /**
     * 备注
     */
    private String remark;


    /**************************************** 枚举 ***************************************************/
    public enum Status {
        DOING(0, "执行中"),
        COMPLATE(1, "执行完"),
        UN(2, "未执行"),
        ;


        /**
         * Code
         */
        private Integer code;

        /**
         * Message
         */
        private String message;

        Status(Integer code, String message) {
            this.code = code;
            this.message = message;
        }

        public Integer code() {
            return this.code;
        }

        public String message() {
            return this.message;
        }
    }

    public enum Type {
        start, end, choose, common
    }
}
